package com.example.leetdemo.finash;

public class Solution640 {

    public String solveEquation(String equation) {
        String[] function = equation.split("=");
        String[] left = function[0].split("\\+");
        String[] right = function[1].split("\\+");
        int x = 0;
        int num = 0;
        for (int i = 0; i < left.length; i++) {
            String[] sub = left[i].split("-");
            if (!sub[0].equals("")) {
                if (sub[0].contains("x")){
                    sub[0] = sub[0].replace("x", "");
                    x += sub[0].equals("") ? 1 : Integer.parseInt(sub[0]);
                } else {
                    num -= Integer.parseInt(sub[0]);
                }
            }
            for (int j = 1; j < sub.length; j++) {
                if (sub[j].contains("x")) {
                    sub[j] = sub[j].replace("x", "");
                    x -= sub[j].equals("") ? 1 : Integer.parseInt(sub[j]);
                } else {
                    num += Integer.parseInt(sub[j]);
                }
            }
        }
        for (int i = 0; i < right.length; i++) {
            String[] sub = right[i].split("-");
            if (!sub[0].equals("")) {
                if (sub[0].contains("x")){
                    sub[0] = sub[0].replace("x", "");
                    x -= sub[0].equals("") ? 1 : Integer.parseInt(sub[0]);
                } else {
                    num += Integer.parseInt(sub[0]);
                }
            }
            for (int j = 1; j < sub.length; j++) {
                if (sub[j].contains("x")) {
                    sub[j] = sub[j].replace("x", "");
                    x += sub[j].equals("") ? 1 : Integer.parseInt(sub[j]);
                } else {
                    num -= Integer.parseInt(sub[j]);
                }
            }
        }
        String result = "";
        if (x == 0 && num > 0) {
            result = "No solution";
        }
        if (x == 0 && num == 0) {
            result = "Infinite solutions";
        }
        if (x != 0) {
            result = "x=" + String.valueOf(num / x);
        }
        return result;
    }


    public static void main(String[] args) {
        System.err.println("\\+");
        Solution640 solution640 = new Solution640();
        System.err.println(solution640.solveEquation("3-x=3+x"));
    }
}
